package com.fjwt.gz.proxy.ctrl.sysuser;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fjwt.gz.core.constants.CS;
import com.fjwt.gz.core.model.ApiRes;
import com.fjwt.gz.db.dto.SysQaDTO;
import com.fjwt.gz.db.vo.SysQaVO;
import com.fjwt.gz.proxy.ctrl.CommonCtrl;
import com.fjwt.gz.service.impl.SysQaService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * <p>
 * 系统QA内容表 前端控制器
 * </p>
 *
 * @author zhangyangyang
 * @since 2025-05-15
 */
@Slf4j
@RestController
@RequestMapping("/api/sysQa")
public class SysQaController extends CommonCtrl {

    @Autowired
    private SysQaService sysQaService;


    /**
     * 机构查询QA内容列表
     */
    @GetMapping
    public ApiRes list(){
        SysQaDTO sysQaDTO = getObject(SysQaDTO.class);
        sysQaDTO.setSysType(CS.SYS_ROLE_TYPE.PROXY);
        log.info("机构端查询QA内容列表，请求地址：/api/sysQa，请求参数：{}",JSONUtil.toJsonStr(sysQaDTO));
        IPage<SysQaVO> page = sysQaService.list(getIPage(true), sysQaDTO);
        log.info("机构端查询QA内容列表，请求地址：/api/sysQa，返回结果：{}",JSONUtil.toJsonStr(page));
        return ApiRes.page(page);
    }

    /**
     * 机构新增QA内容
     */
    @PreAuthorize("hasAnyAuthority('ENT_QA_INFO_ADD')")
    @PostMapping("/add")
    public ApiRes add(){
        SysQaDTO sysQaDTO = getObject(SysQaDTO.class);
        sysQaDTO.setSysType(CS.SYS_ROLE_TYPE.PROXY);
        log.info("机构端新增QA内容，请求地址：/api/sysQa/add，请求参数：{}",JSONUtil.toJsonStr(sysQaDTO));
        sysQaService.add(sysQaDTO);
        return ApiRes.ok();
    }

    /**
     * 机构修改QA内容 or逻辑删除
     */
    @PreAuthorize("hasAnyAuthority('ENT_QA_INFO_EDIT')")
    @PutMapping("/update")
    public ApiRes update(){
        SysQaDTO sysQaDTO = getObject(SysQaDTO.class);
        sysQaDTO.setSysType(CS.SYS_ROLE_TYPE.PROXY);
        log.info("机构端修改QA内容or逻辑删除，请求地址：/api/sysQa/update，请求参数：{}",JSONUtil.toJsonStr(sysQaDTO));
        sysQaService.update(sysQaDTO);
        return ApiRes.ok();
    }

}

